package action;

import com.opensymphony.xwork2.ActionSupport;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import model.Curso;
import model.Professor;

public class ProfessorAction extends ActionSupport {

    private Professor professor;
    private int matricula;
    private int codCurso;
    private List<Professor> professores;
    private List<Curso> cursos;
    private String operacao;
    private String pesquisa;
    private String nomeProfessor;
    private String[] estados = {"AC", "AL", "AP", "AM", "BA", "CE", "DF",
        "ES", "GO", "MA", "MT", "MS", "MG", "PA", "PB", "PR", "PE", "PI",
        "RJ", "RN", "RS", "RO", "RR", "SC", "SP", "SE", "TO"};
    private String[] titulacoes = {"Graduacao", "Especializacao", "Mestrado", "Doutorado"};
    private String readOnly;
    private String readOnlyCod;

    public String getReadOnlyCod() {
        return readOnlyCod;
    }

    public void setReadOnlyCod(String readOnlyCod) {
        this.readOnlyCod = readOnlyCod;
    }

    public String getReadOnly() {
        return readOnly;
    }

    public void setReadOnly(String readOnly) {
        this.readOnly = readOnly;
    }

    public int getCodCurso() {
        return codCurso;
    }

    public void setCodCurso(int codCurso) {
        this.codCurso = codCurso;
    }

    public String[] getTitulacoes() {
        return titulacoes;
    }

    public String getPesquisa() {
        return pesquisa;
    }

    public void setPesquisa(String pesquisa) {
        this.pesquisa = pesquisa;
    }

    public void setTitulacoes(String[] titulacoes) {
        this.titulacoes = titulacoes;
    }

    public String[] getEstados() {
        return estados;
    }

    public void setEstados(String[] estados) {
        this.estados = estados;
    }

    public List<Curso> getCursos() {
        return cursos;
    }

    public void setCursos(List<Curso> cursos) {
        this.cursos = cursos;
    }

    public Professor getProfessor() {
        return professor;
    }

    public void setProfessor(Professor professor) {
        this.professor = professor;
    }

    public int getMatricula() {
        return matricula;
    }

    public void setMatricula(int matricula) {
        this.matricula = matricula;
    }

    public List<Professor> getProfessores() {
        return professores;
    }

    public void setProfessores(List<Professor> professores) {
        this.professores = professores;
    }

    public String getOperacao() {
        return operacao;
    }

    public void setOperacao(String operacao) {
        this.operacao = operacao;
    }

    public String getNomeProfessor() {
        return nomeProfessor;
    }

    public void setNomeProfessor(String nomeProfessor) {
        this.nomeProfessor = nomeProfessor;
    }

    public String pesquisar() throws ClassNotFoundException, SQLException {
        cursos = Curso.obterCursos();
        if (pesquisa == null) {
            if (nomeProfessor == null || nomeProfessor.equals("")) {
                professores = Professor.obterProfessores();
            } else {
                professores = Professor.obterProfessoresPorNome(nomeProfessor);
            }
            return "pesquisar";
        } else if (pesquisa.equals("curso")){
            professores = Professor.obterProfessoresPorCurso(codCurso);
            return "pesquisarPorCurso";
        } else {
            return "pesquisarPorCurso";
        }
        
    }

    public String incluir() throws ClassNotFoundException, SQLException {
        cursos = Curso.obterCursos();
        readOnly = "";
        readOnlyCod = "";
        operacao = "Incluir";
        return "manter";
    }

    public String editar() throws ClassNotFoundException, SQLException {
        professor = Professor.obterProfessor(matricula);
        cursos = Curso.obterCursos();
        readOnly = "";
        readOnlyCod = "true";
        operacao = "Editar";
        return "manter";
    }

    public String excluir() throws ClassNotFoundException, SQLException {
        professor = Professor.obterProfessor(matricula);
        cursos = Curso.obterCursos();
        readOnly = "true";
        readOnlyCod = "true";
        operacao = "Excluir";
        return "manter";
    }

    public String confirmar() throws SQLException, ClassNotFoundException {
        cursos = Curso.obterCursos();
        if(professor.getMatricula() == 0){
            addFieldError("professor.matricula", "Não pode ser NULO");
            return INPUT;
        }
        if (operacao.equals("Incluir")) {
            professor.gravar();
        } else {
            if (operacao.equals("Editar")) {
                professor.editar();
            } else {
                if (operacao.equals("Excluir")) {
                    professor.excluir();
                }
            }
        }
        return pesquisar();
    }

    public String voltar() {
        return "voltar";
    }

}
